package com.leehom.arch.storage.service;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import com.leehom.arch.storage.exception.FileStorageException;
import com.leehom.arch.storage.model.FileItem;

/**
 * @类名: FileService
 * @说明: 文件服务
 *
 * @author   leehom
 * @Date	 2020年12月2日 下午7:57:24
 * 修改记录：
 *
 * @see 	 
 */
/**
 * @类名: FileService
 * @说明: 文件服务接口
 *
 * @author   leehom
 * @Date	 2023年1月12日 上午9:19:55
 * 修改记录：
 *
 * @see 	 
 */
public interface FileService {

	/**
	 * @说明：获取文件
	 *
	 * @author leehom
	 * @param path
	 * @return
	 * 
	 */
	public InputStream getFile(String path, String fileName) throws FileStorageException;
	
	/**
	 * @说明：获取并验证文件
	 *
	 * @author leehom
	 * @param path
	 * @param fileName
	 * @param md5
	 * @param sha
	 * @return
	 * @throws IOException
	 * 
	 */
	public InputStream getFileMd5(String path, String fileName, String md5) throws FileStorageException;
	public InputStream getFileSha(String path, String fileName, String sha) throws FileStorageException;
	
	/**
	 * @说明：存储文件(流)
	 *
	 * @author leehom
	 * @param file
	 * @param path
	 * @throws IOException
	 * 
	 */
	public void storeFile(String path, String fileName, File file) throws FileStorageException;
	public void storeFile(String path, String fileName, InputStream is) throws FileStorageException;

	/**
	 * @说明：列表文件
	 *
	 * @author leehom
	 * @param path
	 * @throws IOException
	 * 
	 */
	public List<FileItem> listFiles(String path) throws FileStorageException;

	/**
	 * @说明：
	 *
	 * @author leehom
	 * @param path
	 * @param fileName
	 * @return
	 * @throws FileStorageException
	 * 
	 */
	public String getUrl(String path, String fileName) throws FileStorageException;
	
}
